//--------------------------------------------------------------------------------------------------------
// 
// Author: Zachary Gay
// Date: 8/23/2012
// Copyright (c) 2012 Zachary Gay.  All Rights Reserved.
//
// Filename: ManaGroup.h
// Description:  The ManaGroup class is exactly what it sounds like: a group of mana.
//                  It is used for every part of the app where mana is used (costs, produced mana, etc.)
//                  Mana Costs can only have "single manas" and "hybrid manas" (i.e. 2 Red and a Red/White)
//                  Produceable Mana has those and "many manas" (i.e. a land that produces red)
//                  It also implements a few convenience methods for adding / subtracting ManaGroups.
//
//--------------------------------------------------------------------------------------------------------

#import <Foundation/Foundation.h>

@interface ManaGroup : NSObject

#warning Needs to conform to NSCopy

// Manas in this Mana Group
@property (nonatomic, strong) NSMutableArray *singleManas;
@property (nonatomic, strong) NSMutableArray *hybridManas;

// Init Methods
- (ManaGroup *) initWithSingleManas: (NSMutableArray *) _singleManas andHybridManas: (NSMutableArray *) _hybridManas;

// Mana Adding / Subtracting Methods
+ (void) addManaFromManaGroup: (ManaGroup *) _givingManaGroup toManaGroup: (ManaGroup *) _receivingManaGroup;
+ (BOOL) attemptToSubtractManaGroup: (ManaGroup *) _groupBeingSubtracted fromManaGroup: (ManaGroup *) _groupLosingMana;

// Convinience Methods
- (int) convertedManaCost;

@end
